Micron Document
Deavmi's coding shack


Commit 814fdd9d0407878eaaccb6e8cb94dbdc9bee9e53


Parents : da2f4fe
Author : Tristan Brice Velloza Kildaire <deavmi@redxen.eu>
Date : 2026-05-03T19:51:38+02:00

PipeMonitor now pushes bytes into log consumer (if configured)

Changes

1 files changed, 26 insertions(+), 4 deletions(-)

M monitor.go +26 -4

Diff

diff --git a/monitor.go b/monitor.go
index 81fdb80..3c680a0 100644
--- a/monitor.go
+++ b/monitor.go
@@ -166,6 +166,9 @@ type PipeMonitor struct {
// logging
log *stdlogger.StdLogger
+
+ // consumer of logs (optional)
+ consumer LogConsumer
}
func (pm PipeMonitor) String() string {
@@ -200,10 +203,15 @@ func (pm PipeMonitor) Stop() {
// waits for bytes and when it gets
// an error then it exits.
func (b *PipeMonitor) logMonitor() {
+ b.log.Trace("Log monitor for '%s' on fd '%v' enter", b.m.Name(), b.pipe)
+
// Add `r` to b.pipes
b.m.AddPipeMon(b)
- b.log.Trace("Log monitor for '%s' on fd '%v' enter", b.m.Name(), b.pipe)
+ if b.consumer != nil {
+ b.consumer.Open()
+ }
+
b.log.Trace("Log monitor for '%s' on fd '%v' using buffer size %d", BUFFER_SIZE)
var buff []byte = make([]byte, BUFFER_SIZE)
@@ -218,15 +226,29 @@ func (b *PipeMonitor) logMonitor() {
break
}
buff = buff[0:n] // trim to bytes got
-
- // TODO: Do something with bytes
b.log.Trace("Got %d bytes: '%s'", n, (string)(buff))
+
+ // If a consumer is attached then push the
+ // bytes to it
+ if b.consumer != nil {
+ if e := b.consumer.Write(buff); e != nil {
+ b.log.Error("Error writing %d bytes to consumer %v: %v", n, b.consumer, e)
+ }
+ }
+
+ // TODO: When to flush consumer?
}
- b.log.Trace("Log monitor for '%s' on fd '%v' exit", b.u.Name(), r)
+ b.log.Trace("Log monitor for '%s' on fd '%v' exit", b.m.Name(), b.pipe)
// Remove `r` from b.pipes
b.m.RemovePipeMon(b)
+
+ // Shutdown the LogConsumer
+ if b.consumer != nil {
+ b.consumer.Flush()
+ b.consumer.Close()
+ }
}
// signal

Served by rngit 1.5.0 - Generated in 0.07s